package com.bailan.foreat.config;

import org.springframework.amqp.core.*;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * 基于死信队列,配置延迟处理
 */
@Configuration
public class AutoEvaluationConfig {

    //死信部分
    @Bean
    public FanoutExchange autoEvaluationDeadLetterExchange(){
        return new FanoutExchange("autoEvaluationDeadLetterExchange");
    }
    @Bean
    public Queue autoEvaluationDeadLetterQueue(){
        return new Queue("autoEvaluationDeadLetterQueue");
    }
    @Bean
    public Binding autoEvaluationDeadLetterBinding(){
        return BindingBuilder.bind(autoEvaluationDeadLetterQueue()).to(autoEvaluationDeadLetterExchange());
    }


    //normal部分
    @Bean
    public DirectExchange autoEvaluationNormalExchange(){
        return new DirectExchange("autoEvaluationNormalExchange");
    }
    //正常队列不能有消费者
    @Bean
    public Queue autoEvaluationNormalQueue(){
        return QueueBuilder.durable("autoEvaluationNormalQueue")
                .deadLetterExchange(autoEvaluationDeadLetterExchange().getName())
                .deadLetterRoutingKey("xxxxx")  //因为死信部分交换机是Fanout广播类型,所以这里routingKey随便写一个就行
                //n秒自动评价订单
                .ttl(20*1000)  //指定ttl
                .build();
    }
    @Bean
    public Binding autoEvaluationNormalBinding(){
        return BindingBuilder.bind(autoEvaluationNormalQueue())
                .to(autoEvaluationNormalExchange())
                .with("autoEvaluation");
    }


}
